08月25, 2020

Linux cache 内存释放

查看系统内存使用情况

使用 free 命令,可以查看内存使用情况; free -s 2; 可以两秒刷新一次查看。

image.png

可以看到 cache 占用了大量的内存。

释放 cache 内存

释放方法有三种, 需要 root 权限。

sync   # 将缓存中的文件写入磁盘,可选
echo 1 > /proc/sys/vm/drop_caches  #To free pagecache 
echo 2 > /proc/sys/vm/drop_caches   #To free dentries and inodes
echo 3 > /proc/sys/vm/drop_caches  #To free pagecache, dentries and inodes

一般使用第一条命令就足够了。执行之后可以发现 cached 几乎被释放,内存又回来了。如果以后你发现内存不够用,可以再执行一次这个命令。

补充:free -g 命令可以以 G 为单位查看内存使用情况。free -m 命令可以以 M 为单位查看内存使用情况。

image.png

还远系统默认配置,可以使用以下命令:

echo 0 > /proc/sys/vm/drop_caches

Linux cache机制

buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会优先从buffers与cached内存区查找,然后才从磁盘读取,通过缓存,能够大大提高了操作系统的性能。

buffers:缓存块设备,只记录文件系统的元数据(metadata)以及 tracking in-flight pages cached:缓存文件。存放目录,文件属性以及权限等。

Cache 分为 Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。

当有大量的日志产生,或者大量的文件IO时,可能会导致cache 的急剧增大,虽然Linux会自动维护Cache, 但是如果我们很需要内存,就要手动释放Cache了。

一般来说,Cache内存占用过大不会怎么拖慢应用速度的,当应用需要很多内存时,Linux系统会收回Cache的内存,为应用腾出空间的。

本文链接:https://587v5.com/post/Linux cache nei-cun-shi-fang.html

Comments